<template>
	<view>
		<view class=""> api</view>
		<button type="default" size="mini" @click="login"> 提交</button>
		<button type="default" size="mini" @click="tesk"> task</button>
		<button type="default" size="mini" @click="down"> 下载</button>
	</view>
</template>

<script>
	export default {
		data() {
			return {

			}
		},
		methods: {

			down() {
				uni.downloadFile({
					url: `https://uniapp.dcloud.net.cn/api/request/network-file.html`, //仅为示例，并非真实接口地址。
					success: (res) => {
						if (res.statusCode !== 200) {
							return
						}
						console.log(res)
						//文件保存到本地
						uni.saveFile({
							// 保存到微信,
							tempFilePath: res.tempFilePath, //临时路径
							success: function(res) {
								console.log(res.savedFilePath)
							}
						});
					}
				});
			},
			tesk() {
				// 想返回一个task对象，可以操作事件的终止
				const task = uni.request({
					url: `http://127.0.0.1:8888/api/private/v1/login`,
					data: {
						username: "admin",
						password: "123456"
					},
					method: "POST",
					success: (data) => {
						console.log(data)
					}
				})
				console.log(task)
				task.abort()
			},

			async login() {
				// uni.request({
				// 	url: `http://127.0.0.1:8888/api/private/v1/login`,
				// 	data: {
				// 		username: "admin",
				// 		password: "123456"
				// 	},
				// 	method: "POST",
				// 	success: (data) => {
				// 		console.log(data)
				// 	}
				// })
				// uni.request已经做了promise话,不可以写,写这样的方法
				const [, {
					data: {
						data,
						meta
					}
				}] = await uni.request({
					url: `http://127.0.0.1:8888/api/private/v1/login`,
					data: {
						username: "admin",
						password: "123456"
					},
					method: "POST"
				})
				console.log(data)
				// 是一个异步的方法,,在html里边localstore,sessionstore
				// 小程序和uniapp 里边都是用的setStorage来保存数据的,是一个异步方法
				// success 来通知保存成功了
				uni.setStorage({
					key: "token",
					data: data.token,
					success: () => {
						console.log('存储陈宫')
					},
					fail: () => {
						console.log('存储失败')
					}
				})
				uni.chooseImage({
					success: (chooseImageRes) => {
						const tempFilePaths = chooseImageRes.tempFilePaths;
						uni.uploadFile({
							url: 'http://127.0.0.1:8888/api/private/v1/upload',
							header: {
								Authorization: data.token
							},
							filePath: tempFilePaths[0],
							name: 'file',
							formData: {
								'user': 'test'
							},
							success: (uploadFileRes) => {
								console.log(JSON.parse(uploadFileRes.data));
								uni.downloadFile({
									url: JSON.parse(uploadFileRes.data).data.url, //仅为示例，并非真实接口地址。
									success: (res) => {
										if (res.statusCode !== 200) {
											return
										}
										console.log(res)
										//文件保存到本地
										uni.saveFile({
											tempFilePath: res.tempFilePath, //临时路径
											success: function(res) {
												console.log(res.savedFilePath)
											}
										});
									}
								});
							}
						});
					}
				});

				// 同步的方法
				try {
					// 想知道有没有保存功能的话,需要去捕获异常
					// 数据量少,数据一多,就会导致程序卡顿或者是缓慢
					// 直接写键值对,不是对象了
					uni.setStorageSync('id', 10);
					console.log("成功了")
				} catch (err) {
					console.error(err, "出错了")
				}


			}
		}
	}
</script>

<style>

</style>
